package com.ofsoft.weixin.mp.message;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.ofsoft.weixin.mp.Dispatcher;

/**
 * 普通消息处理
 * 
 * @author OF
 * @date 2017年10月10日
 */
public abstract class MessageController {
	/**
	 * 验证\请求
	 * 
	 * @param request
	 *            接受消息对象
	 */
	public void doService(HttpServletRequest request,
			HttpServletResponse response) {
		Dispatcher.doDispatch(request, response, this);
	}

	/**
	 * 文字内容的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public abstract MessageResponse textTypeMsg(MessageRequest params);

	/**
	 * 图片类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse imageTypeMsg(MessageRequest params) {
		return null;
	}

	/**
	 * 语音类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse voiceTypeMsg(MessageRequest params) {
		return null;
	}

	/**
	 * 视频类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse videoTypeMsg(MessageRequest params) {
		return null;
	}

	/**
	 * 小视频类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse shortVideoTypeMsg(MessageRequest params) {
		return null;
	}

	/**
	 * 地理位置类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse locationTypeMsg(MessageRequest params) {
		return null;
	}

	/**
	 * 链接类型的消息处理
	 * 
	 * @param msg
	 *            接受消息对象
	 * @return 输出消息对象
	 */
	public MessageResponse linkTypeMsg(MessageRequest msg) {
		return null;
	}

	/**
	 * 点击事件
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse click(MessageRequest params) {
		return null;
	}

	/**
	 * 点击菜单跳转链接时的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse view(MessageRequest params) {
		return null;
	}

	/**
	 * 关注事件
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse subscribe(MessageRequest params) {
		return null;
	}

	/**
	 * 取消关注事件
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse unsubscribe(MessageRequest params) {
		return null;
	}

	/**
	 * 用户未关注时，进行关注后的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse qrsceneSubscribe(MessageRequest params) {
		return null;
	}

	/**
	 * 用户已关注时的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse qrsceneScan(MessageRequest params) {
		return null;
	}

	/**
	 * 上报地理位置事件
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse location(MessageRequest params) {
		return null;
	}

	/**
	 * 扫码推事件的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse scancodePush(MessageRequest params) {
		return null;
	}

	/**
	 * 扫码推事件且弹出“消息接收中”提示框的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse scancodeWaitmsg(MessageRequest params) {
		return null;
	}

	/**
	 * 弹出系统拍照发图的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse picSysphoto(MessageRequest params) {
		return null;
	}

	/**
	 * 弹出拍照或者相册发图的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse picPhotoOrAlbum(MessageRequest params) {
		return null;
	}

	/**
	 * 弹出微信相册发图器的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse picWeixin(MessageRequest params) {
		return null;
	}

	/**
	 * 弹出地理位置选择器的事件推送
	 * 
	 * @param params
	 * @return
	 */
	public MessageResponse locationSelect(MessageRequest params) {
		return null;
	}
}
